package de.akabahn.ebd.stw.zdxfc.prs.commande.listener;

import static de.akabahn.ebd.stw.zdxfc.prs.commande.ZDXFCCommandeConstants.MOUSE_BUTTON_LEFT;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import de.akabahn.ebd.stw.zdxfc.prs.commande.elemente.Schalter;

/**
 * <code>MouseListener</code> Implementierung fuer die Maus-Aktionen auf einem Schalter des Bedienpults.
 *  
 * @author Peter Eimann
 * @since 1.0
 * @version 1.2
 */
public class SchalterListener implements MouseListener {
	
	private Schalter pressedSchalter;

	/**
	 * Wird aufgerufen, wenn ein Mausklick auf dem Schalter erfolgt ist (Maustaste gedrueckt).
	 * Wenn der linke Mouse-Button gedrueckt wurde, wird der gedrueckte Schalter gespeichert.
	 */
	@Override
	public void mousePressed(MouseEvent e) {
		if (e.getButton() == MOUSE_BUTTON_LEFT) {
			pressedSchalter = (Schalter)e.getComponent();
		}
	}

	/**
	 * Wird aufgerufen, wenn ein Mausklick auf dem Schalter erfolgt ist (Maustaste losgelassen).
	 * Wenn der linke Mouse-Button gedrueckt wurde und ein Schalter gespeichert ist, wird
	 * <code>Schalter.toggleSchalter()</code> auf diesem Schalter aufgerufen.
	 * Am Ende wird der gespeicherte Schalter geloescht.
	 * 
	 * @see Schalter#toggleSchalter()
	 */
	@Override
	public void mouseReleased(MouseEvent e) {
		if (e.getButton() == MOUSE_BUTTON_LEFT) {
			if ((Schalter)e.getComponent() == pressedSchalter) {
				pressedSchalter.toggleSchalter();
			}
			pressedSchalter = null;
		}
	}

	/**
	 * Der gespeicherte Schalter wird geloescht, wenn die Maus aus dem Element hinausbewegt wird.
	 */
	@Override
	public void mouseExited(MouseEvent e) {
		pressedSchalter = null;
	}

	/**
	 * keine Aktion
	 */
	@Override
	public void mouseClicked(MouseEvent e) {
	}

	/**
	 * keine Aktion
	 */
	@Override
	public void mouseEntered(MouseEvent e) {
	}
}
